home *** CD-ROM | disk | FTP | other *** search
/ CyberMycha 2008 January / Cybermycha 1_2008.iso / Data.cab / _96BAD31F40E14CF79A347C8D31B1A07C < prev    next >
Encoding:
Text File  |  2004-04-29  |  2.2 KB  |  114 lines

  1.  
  2. regc(0, "COMBINED_XFORM")
  3. regc(4, "MODEL_XFORM")
  4.  
  5. regc(8, "TEXTURE2_XFORM")
  6. regc(10, "TEXTURE3_XFORM")
  7.  
  8. regc(12, "FOG_PARAMS")
  9.  
  10. regcn(13, "DIRECTIONAL_DIR_MS", 0)
  11. regc(14, "CAMERA_POS_MS")
  12.  
  13. // ------------ c40 - c60 reserved
  14. !include("vs_spot_consts.inc")
  15.  
  16. vshader("
  17.  
  18. #define point        v0
  19. #define normal        v1
  20. #define tangent        v2
  21. #define tcoord        v3
  22.  
  23. #define fogp    c12
  24. #define ldir    c13
  25. #define cpos    c14
  26.  
  27.     vs_1_1
  28.  
  29. #include    <cardef.h>
  30. #include    <fog.inc>
  31.  
  32.     dcl_position    point
  33.     dcl_normal        normal
  34.     dcl_tangent        tangent
  35.     dcl_texcoord    tcoord
  36.  
  37.     def    c20, 1, 0, 0, FRESNELSCALE
  38.  
  39.     ; output position
  40.     m4x4    oPos, point, c0
  41.     ; output texcoords
  42.     mov    oT0, tcoord           // color
  43.  
  44.     // binormal = tangent x normal
  45.     mov r0.xyz, normal
  46.     mul r1.xyz, r0.yzxw, tangent.zxyw
  47.     mad r0.xyz, r0.zxyw, tangent.yzxw, -r1
  48.  
  49.     ; r4 L tangent space
  50.     dp3 r4.x, tangent, ldir
  51.     dp3 r4.y, r0, ldir
  52.     dp3 r4.z, normal, ldir
  53.  
  54.     ; normalize L
  55.     dp3 r4.w, r4, r4
  56.     rsq r4.w, r4.w
  57.     mul oT1.xyz, r4, r4.w
  58.  
  59.     ; E in model space
  60.     add r5, cpos, -point
  61.       ; fresnel
  62.     dp3 r6.w, r5, r5
  63.     rsq r6.w, r6.w
  64.     mul r6.xyz, r5, r6.w
  65.  
  66.     dp3    r6.w, r6, normal
  67.     mad r6.w, r6.w, -r6.w, c20.x  // -dot(E, N)*dot(E, N)+1 = 1- pow(dot(E, N),2)
  68.     mul    r6.w, r6.w, r6.w        //f^2
  69.     ; output fresnel
  70.     mul oT4.x, r6.w, c20.w
  71.  
  72.     ; reflect E
  73.     dp3 r5.w, r5, normal
  74.     add r6.w, r5.w, r5.w
  75.     mad r6.xyz, normal, r6.w, -r5 // dot(E, N)*2 *N - E
  76.  
  77.     ; output R in world space    (do cubemapy - nie normalizowac!!!!)
  78.     dp3 oT3.x, -r6, c4
  79.     dp3 oT3.y, -r6, c5
  80.     dp3 oT3.z, -r6, c6
  81.  
  82.     ; normalize R
  83.     dp3 r6.w, r6, r6
  84.     rsq r6.w, r6.w
  85.     mul r6.xyz, r6, r6.w
  86.  
  87.     ; output R in tangent space
  88.     dp3 oT2.x, tangent, r6
  89.     dp3 oT2.y, r0, r6
  90.     dp3 oT2.z, normal, r6
  91.  
  92. ;------------------------------------------
  93. // spot light
  94. // used r0 - r2
  95. #if VS_SPOTLIGHTS
  96. #include <vs_spot_func.inc>
  97. #endif
  98. ;----------------------------
  99.  
  100.     ; calc fog
  101.        dp4    r0.x, point, c2
  102.        FOG(r0.x, fogp, r10)
  103.  
  104.     ; clouds texgen (from model space)
  105.     dp4    oT5.x, point, c8
  106.     dp4    oT5.y, point, c9
  107.  
  108.     ; terrain lightmap texgen (from model space)
  109.     dp4    oT6.x, point, c10
  110.     dp4    oT6.y, point, c11
  111.  
  112. ")
  113.  
  114.